package exame_05_06_2012;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.GregorianCalendar;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

public class Agenda {
	private String titular;
	private ArrayList<Tarefa> tarefas;

	public Agenda() {
		this.tarefas = new ArrayList<Tarefa>();
	}

	// 2 a
	public void addTarefa(Tarefa t) {
		this.tarefas.add(t.clone());
	}

	public ArrayList<Tarefa> getTarefas() {
		return this.tarefas;
	}

	public String getTitular() {
		return this.titular;
	}

	public void setTarefas(ArrayList<Tarefa> tarefas) {
		this.tarefas = tarefas;
	}

	public void setTitular(String titular) {
		this.titular = titular;
	}

	// 2 b
	public Iterator<Tarefa> tarefasActivas(Comparator<Tarefa> ct) {

		Set<Tarefa> tarefasActAux = new TreeSet<Tarefa>(ct);

		for (Tarefa tarefa : this.tarefas) {
			if (tarefa.activa() == true) {
				tarefasActAux.add(tarefa.clone());
			}
		}

		return tarefasActAux.iterator();
	}

	// 2d
	public Set<Tarefa> tarefasEntreDatas(GregorianCalendar di,
			GregorianCalendar df) {

		Set<Tarefa> tarefasEntre = new HashSet<Tarefa>();

		for (Tarefa t : this.tarefas) {
			if ((t.getInicio().equals(di) || t.getInicio().after(di))
					&& (t.getFim().before(df) || t.getFim().equals(df))) {
				tarefasEntre.add(t.clone());
			}
		}

		return tarefasEntre;
	}

}
